#region Using directives

using System;
using System.Collections.Generic;
using System.Text;

using Weazel.Gezel.Model.Errors;

#endregion

namespace Weazel.Gezel.Model 
{
  /// <summary>
  /// The IVerifiable interface provides implementors
  /// with a method to verify an entity and report the
  /// errors found during verification.
  /// </summary>
  interface IVerifiable
  {
    /// <summary>
    /// Performs verification on the entity, adding any errors to
    /// the list. A custom argument may be specified.
    /// </summary>
    /// <param name="errors">the list of accumulated errors</param>
    /// <param name="arguments">optional custom verification arguments</param>
		void Verify(ref List<VerificationError> errors, ref List<VerificationWarning> warnings, params object[] arguments);
  }
}
